{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "EMNIST CNN Classification with Class Weights",
      "provenance": [],
      "toc_visible": true,
      "authorship_tag": "ABX9TyO8TmGWQjW9xJ3aCsw8lP7g",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "f0ea3cd9c35149f494914895d3311c4c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_6585da89069b4ad7838ade315150c739",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_9ffdd3576f2f40d3acf0f149dec5eb1c",
              "IPY_MODEL_9131ace92cc34074981021f6797a331a"
            ]
          }
        },
        "6585da89069b4ad7838ade315150c739": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "9ffdd3576f2f40d3acf0f149dec5eb1c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_1b44fc8dacf74a8188855c1a847bde02",
            "_dom_classes": [],
            "description": "Dl Completed...: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_98f46773ef9d42b5904bb600257af07f"
          }
        },
        "9131ace92cc34074981021f6797a331a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_9ed61eb90d95495eb95cda2949853b38",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 1/1 [00:13&lt;00:00, 13.34s/ url]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_2453fc5bc7114522a6ddad4ccd6ceda9"
          }
        },
        "1b44fc8dacf74a8188855c1a847bde02": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "98f46773ef9d42b5904bb600257af07f": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "9ed61eb90d95495eb95cda2949853b38": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "2453fc5bc7114522a6ddad4ccd6ceda9": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "a7251d1a75954ecebe3cd75409bc6864": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_4178a58f260a45429994a7d1d7b7852f",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_3ec712acc025444f87d7883e098d6cef",
              "IPY_MODEL_01f1ca80c8d845638cdfda9b85542b06"
            ]
          }
        },
        "4178a58f260a45429994a7d1d7b7852f": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "3ec712acc025444f87d7883e098d6cef": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_9a6f80acd6e34dbea452578db4aeeab9",
            "_dom_classes": [],
            "description": "Dl Size...: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_a3f4129414504fa09aa0bbe5025b58c3"
          }
        },
        "01f1ca80c8d845638cdfda9b85542b06": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_33a64847878641319edcfb2d5a92e575",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 535/535 [00:13&lt;00:00, 40.20 MiB/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_1df04b8fa4b842f7aaec1601f96a5db8"
          }
        },
        "9a6f80acd6e34dbea452578db4aeeab9": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "a3f4129414504fa09aa0bbe5025b58c3": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "33a64847878641319edcfb2d5a92e575": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "1df04b8fa4b842f7aaec1601f96a5db8": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "aa63750085f84dd0a753a49c5952bbd5": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_ceafc186e95f449bb6e80d363f0f5039",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_425fe28419bf4e66a8f0ea36e5d43ea8",
              "IPY_MODEL_d539fa60fc4b4a8f8ea4e14c1f2f9d37"
            ]
          }
        },
        "ceafc186e95f449bb6e80d363f0f5039": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "425fe28419bf4e66a8f0ea36e5d43ea8": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_c484b1763c4f4b609041b54b3bbd466c",
            "_dom_classes": [],
            "description": "Extraction completed...: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_2cec00d0767c4099838fa394fa923998"
          }
        },
        "d539fa60fc4b4a8f8ea4e14c1f2f9d37": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_8930e952145b4ebb804b0ba674230240",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 1/1 [00:19&lt;00:00, 19.73s/ file]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_94ba946dfc3d4337b5b3db3807f26827"
          }
        },
        "c484b1763c4f4b609041b54b3bbd466c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "2cec00d0767c4099838fa394fa923998": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "8930e952145b4ebb804b0ba674230240": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "94ba946dfc3d4337b5b3db3807f26827": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "ff787c2e34094b2eaaf3d51702ed5a85": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_53b214ccbe254053afffe8cc3de5ebbe",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_2fed5366cd1b4f1683414b9e516c937c",
              "IPY_MODEL_ec5c68f00b7a484bba4c8eb53eb0441b"
            ]
          }
        },
        "53b214ccbe254053afffe8cc3de5ebbe": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "2fed5366cd1b4f1683414b9e516c937c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_1e64cdc2f8a14bc2a8d172bac7929a8b",
            "_dom_classes": [],
            "description": "Extraction completed...: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_46da174f5948499785b0078b7688c947"
          }
        },
        "ec5c68f00b7a484bba4c8eb53eb0441b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_e5fc68f4301f420db3cf45c1012dd6c4",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 4/4 [00:05&lt;00:00,  1.32s/ file]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_03bfe99b430b447ab4aff4c18a7d2e17"
          }
        },
        "1e64cdc2f8a14bc2a8d172bac7929a8b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "46da174f5948499785b0078b7688c947": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "e5fc68f4301f420db3cf45c1012dd6c4": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "03bfe99b430b447ab4aff4c18a7d2e17": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "f3a7b1b732b74eef932dd8378f8ff028": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_a21a0c307b6b45f68d084053a232857c",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_498bd762f63b44cebedd4a5738e14547",
              "IPY_MODEL_075b30e1ebbb4220a49edd516ab194e1"
            ]
          }
        },
        "a21a0c307b6b45f68d084053a232857c": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "498bd762f63b44cebedd4a5738e14547": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_d050a807cbfc4ea487eeb1453d51a043",
            "_dom_classes": [],
            "description": "",
            "_model_name": "FloatProgressModel",
            "bar_style": "info",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_0c5b6c3a19244d7e96753a76470b7a90"
          }
        },
        "075b30e1ebbb4220a49edd516ab194e1": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_2fd8a73fdbc044a8b143dc19780d6577",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 697932/0 [04:13&lt;00:00, 2848.94 examples/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_8c285fcf1a8b4cfcb90d1b9740323546"
          }
        },
        "d050a807cbfc4ea487eeb1453d51a043": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "0c5b6c3a19244d7e96753a76470b7a90": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "2fd8a73fdbc044a8b143dc19780d6577": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "8c285fcf1a8b4cfcb90d1b9740323546": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "f41bdec3ab3047c9897a2c7f2cb8956f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_ba29ba2651254d65bd3496bbb1fb743b",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_5824ee8ab67546ed801e74a5df73a507",
              "IPY_MODEL_aed3536fffde42689bcf347c1451394d"
            ]
          }
        },
        "ba29ba2651254d65bd3496bbb1fb743b": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "5824ee8ab67546ed801e74a5df73a507": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_eb0180cba9b84567855ace75ace68f89",
            "_dom_classes": [],
            "description": "100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "danger",
            "max": 697932,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 696142,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_2925881ba7074bb28e82bf8b45ae9948"
          }
        },
        "aed3536fffde42689bcf347c1451394d": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_80a7a91259e143db86dd9807b0988cdd",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 696142/697932 [00:02&lt;00:02, 615.55 examples/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_0159d1e6a50a4e8d816a861fd14feeff"
          }
        },
        "eb0180cba9b84567855ace75ace68f89": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "2925881ba7074bb28e82bf8b45ae9948": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "80a7a91259e143db86dd9807b0988cdd": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "0159d1e6a50a4e8d816a861fd14feeff": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "37d34ce9dc1b491aa541a6536741a7aa": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_c4e46268afd84d679c5d9359a1270a96",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_6015552815f44bb39eb362517e52b843",
              "IPY_MODEL_e6b7c46b6fec4997be27f44a694d891a"
            ]
          }
        },
        "c4e46268afd84d679c5d9359a1270a96": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "6015552815f44bb39eb362517e52b843": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_8ec90bde0d7c4c668ec4f728beb42e1b",
            "_dom_classes": [],
            "description": "",
            "_model_name": "FloatProgressModel",
            "bar_style": "info",
            "max": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_0c0260512221496187bdc9e142e76e62"
          }
        },
        "e6b7c46b6fec4997be27f44a694d891a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_3ba1c078a9e14413b38f382317324697",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 116323/0 [00:39&lt;00:00, 2893.08 examples/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_17c3c52f07a74d80a854b56b1f6e98c2"
          }
        },
        "8ec90bde0d7c4c668ec4f728beb42e1b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "0c0260512221496187bdc9e142e76e62": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "3ba1c078a9e14413b38f382317324697": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "17c3c52f07a74d80a854b56b1f6e98c2": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "f582c24ef13b48bc9d512a7565dfc5da": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_1174b32e2f9844c89f959cd43a04cf11",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_fb09d2e4f317461bbafffaa1669412b6",
              "IPY_MODEL_06080254eeb44c079ef792ed24710130"
            ]
          }
        },
        "1174b32e2f9844c89f959cd43a04cf11": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "fb09d2e4f317461bbafffaa1669412b6": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_7abe0cc3d2f7404187450d967e5526b2",
            "_dom_classes": [],
            "description": " 74%",
            "_model_name": "FloatProgressModel",
            "bar_style": "danger",
            "max": 116323,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 86292,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_971c8becff3e4ccc89946938285e8d13"
          }
        },
        "06080254eeb44c079ef792ed24710130": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_05b9b4756ed6454b847c978e5a615746",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 86292/116323 [00:00&lt;35:50, 13.97 examples/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_2f55c0cf9a184373aee43d960de7cac2"
          }
        },
        "7abe0cc3d2f7404187450d967e5526b2": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "971c8becff3e4ccc89946938285e8d13": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "05b9b4756ed6454b847c978e5a615746": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "2f55c0cf9a184373aee43d960de7cac2": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/wandb/awesome-dl-projects/blob/master/ml-tutorial/EMNIST_CNN_Classification_with_Class_Weights.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LHCCGutqrj-r",
        "colab_type": "text"
      },
      "source": [
        "# Imports and Setups"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qiFYfrVpXbAP",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 391
        },
        "outputId": "f99cc16f-fc06-48cc-bf47-04d47f31aee9"
      },
      "source": [
        "!nvidia-smi"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Wed Aug 26 20:12:04 2020       \n",
            "+-----------------------------------------------------------------------------+\n",
            "| NVIDIA-SMI 450.57       Driver Version: 418.67       CUDA Version: 10.1     |\n",
            "|-------------------------------+----------------------+----------------------+\n",
            "| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n",
            "| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n",
            "|                               |                      |               MIG M. |\n",
            "|===============================+======================+======================|\n",
            "|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |\n",
            "| N/A   48C    P8    10W /  70W |      0MiB / 15079MiB |      0%      Default |\n",
            "|                               |                      |                 ERR! |\n",
            "+-------------------------------+----------------------+----------------------+\n",
            "                                                                               \n",
            "+-----------------------------------------------------------------------------+\n",
            "| Processes:                                                                  |\n",
            "|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n",
            "|        ID   ID                                                   Usage      |\n",
            "|=============================================================================|\n",
            "|  No running processes found                                                 |\n",
            "+-----------------------------------------------------------------------------+\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WwZMe8Ey0LYE",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 93
        },
        "outputId": "272b1a83-8aa6-4c24-e77e-40f470c5d66b"
      },
      "source": [
        "import tensorflow as tf\n",
        "print(tf.__version__)\n",
        "\n",
        "from tensorflow.keras.layers import *\n",
        "from tensorflow.keras.models import *\n",
        "import tensorflow_datasets as tfds\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "%matplotlib inline\n",
        "# tfds.disable_progress_bar()\n",
        "\n",
        "from tqdm import tqdm\n",
        "import seaborn as sns\n",
        "from sklearn.metrics import confusion_matrix\n",
        "from sklearn.preprocessing import normalize\n",
        "from sklearn.utils import class_weight"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2.3.0\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
            "  import pandas.util.testing as tm\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HqUfAaLR7H4F",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "%%capture\n",
        "!pip install wandb"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3GeVDMnA7LOr",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 109
        },
        "outputId": "75a7e669-e174-4ac0-e0ff-b22bc671a0e2"
      },
      "source": [
        "import wandb\n",
        "from wandb.keras import WandbCallback\n",
        "\n",
        "wandb.login()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "        window._wandbApiKey = new Promise((resolve, reject) => {\n",
              "            function loadScript(url) {\n",
              "            return new Promise(function(resolve, reject) {\n",
              "                let newScript = document.createElement(\"script\");\n",
              "                newScript.onerror = reject;\n",
              "                newScript.onload = resolve;\n",
              "                document.body.appendChild(newScript);\n",
              "                newScript.src = url;\n",
              "            });\n",
              "            }\n",
              "            loadScript(\"https://cdn.jsdelivr.net/npm/postmate/build/postmate.min.js\").then(() => {\n",
              "            const iframe = document.createElement('iframe')\n",
              "            iframe.style.cssText = \"width:0;height:0;border:none\"\n",
              "            document.body.appendChild(iframe)\n",
              "            const handshake = new Postmate({\n",
              "                container: iframe,\n",
              "                url: 'https://app.wandb.ai/authorize'\n",
              "            });\n",
              "            const timeout = setTimeout(() => reject(\"Couldn't auto authenticate\"), 5000)\n",
              "            handshake.then(function(child) {\n",
              "                child.on('authorize', data => {\n",
              "                    clearTimeout(timeout)\n",
              "                    resolve(data)\n",
              "                });\n",
              "            });\n",
              "            })\n",
              "        });\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[32m\u001b[41mERROR\u001b[0m Not authenticated.  Copy a key from https://app.wandb.ai/authorize\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "API Key: ··········\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M_C6x2qUrnSu",
        "colab_type": "text"
      },
      "source": [
        "# Download EMNIST and Minor Investigation\n",
        "\n",
        "Check out this [colab notebook]() for:\n",
        "* More on `EMNIST/bymerge` dataset\n",
        "* Class distribution\n",
        "\n",
        "Check out [this paper](https://arxiv.org/abs/1702.05373) for more on EMNIST."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "T7KbDzcP0iXX",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 491,
          "referenced_widgets": [
            "f0ea3cd9c35149f494914895d3311c4c",
            "6585da89069b4ad7838ade315150c739",
            "9ffdd3576f2f40d3acf0f149dec5eb1c",
            "9131ace92cc34074981021f6797a331a",
            "1b44fc8dacf74a8188855c1a847bde02",
            "98f46773ef9d42b5904bb600257af07f",
            "9ed61eb90d95495eb95cda2949853b38",
            "2453fc5bc7114522a6ddad4ccd6ceda9",
            "a7251d1a75954ecebe3cd75409bc6864",
            "4178a58f260a45429994a7d1d7b7852f",
            "3ec712acc025444f87d7883e098d6cef",
            "01f1ca80c8d845638cdfda9b85542b06",
            "9a6f80acd6e34dbea452578db4aeeab9",
            "a3f4129414504fa09aa0bbe5025b58c3",
            "33a64847878641319edcfb2d5a92e575",
            "1df04b8fa4b842f7aaec1601f96a5db8",
            "aa63750085f84dd0a753a49c5952bbd5",
            "ceafc186e95f449bb6e80d363f0f5039",
            "425fe28419bf4e66a8f0ea36e5d43ea8",
            "d539fa60fc4b4a8f8ea4e14c1f2f9d37",
            "c484b1763c4f4b609041b54b3bbd466c",
            "2cec00d0767c4099838fa394fa923998",
            "8930e952145b4ebb804b0ba674230240",
            "94ba946dfc3d4337b5b3db3807f26827",
            "ff787c2e34094b2eaaf3d51702ed5a85",
            "53b214ccbe254053afffe8cc3de5ebbe",
            "2fed5366cd1b4f1683414b9e516c937c",
            "ec5c68f00b7a484bba4c8eb53eb0441b",
            "1e64cdc2f8a14bc2a8d172bac7929a8b",
            "46da174f5948499785b0078b7688c947",
            "e5fc68f4301f420db3cf45c1012dd6c4",
            "03bfe99b430b447ab4aff4c18a7d2e17",
            "f3a7b1b732b74eef932dd8378f8ff028",
            "a21a0c307b6b45f68d084053a232857c",
            "498bd762f63b44cebedd4a5738e14547",
            "075b30e1ebbb4220a49edd516ab194e1",
            "d050a807cbfc4ea487eeb1453d51a043",
            "0c5b6c3a19244d7e96753a76470b7a90",
            "2fd8a73fdbc044a8b143dc19780d6577",
            "8c285fcf1a8b4cfcb90d1b9740323546",
            "f41bdec3ab3047c9897a2c7f2cb8956f",
            "ba29ba2651254d65bd3496bbb1fb743b",
            "5824ee8ab67546ed801e74a5df73a507",
            "aed3536fffde42689bcf347c1451394d",
            "eb0180cba9b84567855ace75ace68f89",
            "2925881ba7074bb28e82bf8b45ae9948",
            "80a7a91259e143db86dd9807b0988cdd",
            "0159d1e6a50a4e8d816a861fd14feeff",
            "37d34ce9dc1b491aa541a6536741a7aa",
            "c4e46268afd84d679c5d9359a1270a96",
            "6015552815f44bb39eb362517e52b843",
            "e6b7c46b6fec4997be27f44a694d891a",
            "8ec90bde0d7c4c668ec4f728beb42e1b",
            "0c0260512221496187bdc9e142e76e62",
            "3ba1c078a9e14413b38f382317324697",
            "17c3c52f07a74d80a854b56b1f6e98c2",
            "f582c24ef13b48bc9d512a7565dfc5da",
            "1174b32e2f9844c89f959cd43a04cf11",
            "fb09d2e4f317461bbafffaa1669412b6",
            "06080254eeb44c079ef792ed24710130",
            "7abe0cc3d2f7404187450d967e5526b2",
            "971c8becff3e4ccc89946938285e8d13",
            "05b9b4756ed6454b847c978e5a615746",
            "2f55c0cf9a184373aee43d960de7cac2"
          ]
        },
        "outputId": "9f03dc0b-ffa1-4fa2-e4e6-2107f09f406a"
      },
      "source": [
        "# Gather EMNIST/bymerge dataset\n",
        "train_ds, validation_ds = tfds.load(\n",
        "    \"emnist/bymerge\",\n",
        "    split=[\"train[:85%]\", \"train[85%:]\"],\n",
        "    as_supervised=True\n",
        ")"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\u001b[1mDownloading and preparing dataset emnist/bymerge/3.0.0 (download: 535.73 MiB, generated: Unknown size, total: 535.73 MiB) to /root/tensorflow_datasets/emnist/bymerge/3.0.0...\u001b[0m\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "f0ea3cd9c35149f494914895d3311c4c",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Dl Completed...', max=1.0, style=Progre…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "a7251d1a75954ecebe3cd75409bc6864",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Dl Size...', max=1.0, style=ProgressSty…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "aa63750085f84dd0a753a49c5952bbd5",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Extraction completed...', max=1.0, styl…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings\n",
            "  InsecureRequestWarning)\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "\n",
            "\n",
            "\n",
            "\n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "ff787c2e34094b2eaaf3d51702ed5a85",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Extraction completed...', max=1.0, styl…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "f3a7b1b732b74eef932dd8378f8ff028",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\rShuffling and writing examples to /root/tensorflow_datasets/emnist/bymerge/3.0.0.incompleteP14EJ7/emnist-train.tfrecord\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "f41bdec3ab3047c9897a2c7f2cb8956f",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, max=697932.0), HTML(value='')))"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\r"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "37d34ce9dc1b491aa541a6536741a7aa",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\rShuffling and writing examples to /root/tensorflow_datasets/emnist/bymerge/3.0.0.incompleteP14EJ7/emnist-test.tfrecord\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "f582c24ef13b48bc9d512a7565dfc5da",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, max=116323.0), HTML(value='')))"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\u001b[1mDataset emnist downloaded and prepared to /root/tensorflow_datasets/emnist/bymerge/3.0.0. Subsequent calls will reuse this data.\u001b[0m\n",
            "\r"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QfFWriVto6G3",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 36
        },
        "outputId": "07b44d6b-8077-435d-fef3-f22380fafd05"
      },
      "source": [
        "LABELS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', \n",
        "          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n",
        "          'a', 'b', 'd', 'e', 'f', 'g', 'h', 'n', 'q', 'r', 't']\n",
        "\n",
        "print(len(LABELS))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "47\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6BNpPDFAruNE",
        "colab_type": "text"
      },
      "source": [
        "# Simple `tf.data` dataloader"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kFzES4Xa2DTA",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "AUTO = tf.data.experimental.AUTOTUNE\n",
        "BATCH_SIZE = 256\n",
        "\n",
        "## We are transposing to rotate the image by 90 deg clockwise making the images human friendly.\n",
        "def transpose_and_flatten(image, label):\n",
        "  image = tf.image.convert_image_dtype(image, dtype=tf.float32) # scale image pixels to [0,1]\n",
        "  image = tf.transpose(image, [1,0,2]) # transpose to get human friendly image, since rotation\n",
        "\n",
        "  label = tf.one_hot(label, depth=len(LABELS)) # one hot encode label\n",
        "\n",
        "  return image, label\n",
        "\n",
        "trainloader = (\n",
        "    train_ds\n",
        "    .shuffle(1024)\n",
        "    .map(transpose_and_flatten, num_parallel_calls=AUTO)\n",
        "    .batch(BATCH_SIZE)\n",
        "    .prefetch(AUTO)\n",
        ")\n",
        "\n",
        "testloader = (\n",
        "    validation_ds\n",
        "    .map(transpose_and_flatten, num_parallel_calls=AUTO)\n",
        "    .batch(BATCH_SIZE)\n",
        "    .prefetch(AUTO)\n",
        ")"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0Il96w-6sCk9",
        "colab_type": "text"
      },
      "source": [
        "#### Quick Visualization\n",
        "(Run the cell below multiple times to visualize different images.)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0ekU0Gj3kU4c",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 591
        },
        "outputId": "f2e0065d-0fe6-4fa5-9fbe-e3a8dd698f1a"
      },
      "source": [
        "imgs, labels = next(iter(trainloader))\n",
        "\n",
        "plt.figure(figsize=(10, 10))\n",
        "for n in range(25):\n",
        "    ax = plt.subplot(5, 5, n+1)\n",
        "    plt.imshow(tf.reshape(imgs[n], shape=(28,28)), cmap='gray')\n",
        "    plt.title(LABELS[np.argmax(labels[n])])\n",
        "    plt.axis('off')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAI+CAYAAABe7hvVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZRU1dU+/ueo4ACCCArIqAiioCImUVHAAUQcEU2cX81rXH71VUMSY/KLs9FoTIwmajSDiVFJNFGcxaAigoomBhkVUWYUmWQGweH+/kB3nrPpKqurq7u6Tj+ftbLWLu7p7mvfutU3Z5+9T8iyDCIiIiKp2aLcJyAiIiJSG/SQIyIiIknSQ46IiIgkSQ85IiIikiQ95IiIiEiS9JAjIiIiSdJDjoiIiCQp2YecEELXEMLHIYQHyn0uUrwQwgMhhIUhhFUhhBkhhO+U+5ykOLqW6QghzAkhrA8hrKH/7VLu85Lqc9dwTQjhsxDC7eU+r1IJqTYDDCGMArAtgLlZlp1Z7vOR4oQQegB4L8uyDSGE7gDGADgmy7L/lPfMpLp0LdMRQpgD4DtZlj1f7nOR0gkhNAXwIYCjsywbW+7zKYUkZ3JCCKcCWAHghXKfi9RMlmXTsizb8OXLL/7XpYynJEXStRSp904CsBjAuHKfSKkk95ATQmgG4DoA3y/3uUhphBB+G0JYB2A6gIUAninzKUmRdC1F6rWzAdyXJZTiSe4hB8BPAdyTZdmCcp+IlEaWZRcC2B5AXwAjAGzI/xVSX+laJuWxEMKKL/73WLlPRmomhNAJQH8Afyn3uZRSUg85IYReAAYAuLXc5yKllWXZZ1mWvQygPYALyn0+Ujxdy2QMybJshy/+N6TcJyM1dhaAl7Msm13uEymlrcp9AiV2KIDOAOaFEACgKYAtQwh7ZVnWu4znJaWzFbSOIxW6liL1x/8AuKncJ1FqSc3kAPg9Nn1o9vrif3cDeBrAoHKelBQnhLBzCOHUEELTEMKWIYRBAE6DFpRXHF1LkforhNAHQDsA/yj3uZRaUjM5WZatA7Duy9chhDUAPs6ybEn5zkpqIMOmdMbd2PRAPhfAsCzLnijrWUkxdC1F6q+zAYzIsmx1uU+k1JLtkyMiIiINW2rpKhEREREAesgRERGRROkhR0RERJKkhxwRERFJkh5yREREJEl5S8hDCCq9KoMsy0JtfF9dz/Kojeupa1keujfTonszHbmupWZyREREJEl6yBEREZEkJdXxuDZtscUWVcYA8Omnn9b16YiIiMhX0EyOiIiIJEkPOSIiIpIkPeSIiIhIkrQmJ49WrVpZ3LdvX4v32muvaNxdd91l8UcffVT7J5aQLbfc0uIdd9wxOta8efOS/ixeO/Xhhx9a/PHHH5f051Sirbfe2uK2bdtGx7baqrCPCf79Llq0KDr2ySeffOXXSNr4XvdCKKySW++X3PxaUf5977DDDhY3adIkGlfo/V2MlStXWuz/Nn722We19nOZZnJEREQkSXrIERERkSSFLMvdnLGhdW7cZpttotff+973LL744ost3m677aJxvXr1snjOnDk1Po/Uu6p27tzZ4n322cfiM888Mxq39957W+ynYouxatUqi5966imLH3300Wgcp7KWLl0aHfv888+r/XPra1dVfr+feOKJFvP7Hig8bbh69WqLx4wZEx3jaes1a9ZYPHbs2JzjOF6+fHk0rlxpi/p8b+Zrc8EaNWpkcevWraNjnLrg696vX79oXLNmzap9ToMHD7bYX09eGtC0aVOL/f3G9+2rr74aHXvllVcsXrx4cUHnV1/vTb4OnMrjtBMAdOjQweJOnTpFx/izlT9L/bhCr2Wh+JpNmTLF4gceeCAaN3nyZItr8++mZnJEREQkSXrIERERkSQ1+OoqngrcY489omOnnHKKxTvvvLPFPAUHxOkN2Zxfvc+pkVNPPdXi3r17R+PyVWMUg1OzXCHH5wMAM2bMsJgr5wDgpZdesriY1FU5+RTGwIEDLb722mst7tKlSzSu0MoXxlPlQPy7z1eFtWHDBounTZtm8fjx46NxL774osXz5s2zeNmyZTl/bgo41dSiRYvo2MEHH2yx//2z7bff3uJDDz0057F8aS0+Vqh8KTS+TjzOv/f4vXnWWWdFx5544gmLL7jgAovrqoqnJri6EYgrHBs3bmxxjx49onF9+vSxeNddd42O9ezZ02J+r/jlFvw5+xXLV6r8Gn+N+Hvwz12xYkXOcXwPA6X9bNVMjoiIiCRJDzkiIiKSJD3kiIiISJIa/JocLq279957cx6bPXu2xeedd140Th1zi5ev7JXzspxX97ld/zoXXkfQrl07i/k6A/HarEmTJkXHxo0bV+X5VQL/++XWBx07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gTildtFFF1m8YMGCaJxaOGzu/ffft9h/hubasJi/BohTk/k2azz99NMtbt++fc5z4s/kq666ymLfJTclnKLy5d/cYbqYlBQQl5fnSz0VI9/mnXxv8jn5e5hLypWuEhEREakmPeSIiIhIkiouXTV06FCLuUoDAO68806LefX/888/H43jDcS406bfoJMrubgKhNNT/vz89LuvHpF4E8axY8dazBVUQPz759SV78Q5adIki5UGLBy/V08++WSLr7vuumgcTz/7jsI///nPLf7FL35h8bp163L+XK7a8dPUf/3rXy1+7bXXLPadeblikkyqs5IAACAASURBVKv17rjjjmgc35tcJSabcLfiql4XglMXvvru7rvvtpjfb9zVGACOOuooi/l+TrmDNacGuUIXAE455RSL+T1clykp/7svtBKZ3w+8tMD/3XzzzTctLuZ9VyjN5IiIiEiS9JAjIiIiSdJDjoiIiCSpItbk8DqL2bNnW7xy5cpoHO8AzuVpfn1Arjyv33V3p512sni33XazmHdq9fz3zlei3lDxmgwuHeWd4wGga9euFvPvUeucSoPz+9/97nct9rlztmzZsuj1/fffb3G+dTiF4vuHWwrwvQ0AF198scW8FkFr4uoed1A+88wzo2P8Wcnrr0aOHBmNmzJlisUpr8PhdZ99+vSx+NRTT43GcUfhfOXazP+t4dfcUoV3hgfidgB8D69evToax38D87UDqG80kyMiIiJJ0kOOiIiIJKki0lXcbfN73/uexb789KOPPrK40ClPTlFxeToQlzUOHDjQYj8lzufhO4NyKbtSV/n5En5+rd9d6XGah0s9fanoZ599ZvGYMWOiY7W56Szfw6tWrco5rtDSVikd/gy85ZZbLPYl5Ozmm2+uMgbi91jK+L3aqlWrKmM/jhWakgLidBP/HfL3LN9bvLkmb5Dsz4k3EPXnyufEyxH8z/Vps9qimRwRERFJkh5yREREJEl6yBEREZEkVcSaHC45/vDDDy32625yrcPJt9aDc4u8BgcADjzwQIv9OhzG63C4FT0Ql0ZqXYnUJytWrLB43LhxFvtcPOfshw8fHh2rD+/plEuO6wv/+cclzxz7cmfevuG3v/2txaVoN1CJeO3R6NGjLeathoC4vQNv3TB58uRoHLdUefXVV6Nj8+bNs/iDDz7I+bN4PVCLFi0s5rYSANChQweL862D4+/Pfxv9ufs1RLVFMzkiIiKSJD3kiIiISJIqIl3F8pUa8m7J3On04IMPjsZx50be0ZrLxIF4ipa7Qvoy8WuuucZin66aO3duzvMVKSfuXnzFFVdY/PDDD0fjOF08fvz42j+xKviUcy58rkD+0nMp3B577BG9HjZsmMX5OvJyZ2PfLbuh46UXEyZMiI49//zzFnNq71//+lc0LldKCoj/ZvFO5rvssks07rDDDrO4devWFn/jG9+IxrVp06aK/4rNcUsV3l2cy9OBukszayZHREREkqSHHBEREUlSxaWreNqap+AA4LzzzrOYNzjjlBQQd3fllJSfduXU2HPPPWfxo48+Go0bMWKExb4Lsyo/pL7i9yZXwYwaNaocp7MZ7sh8zDHH5DzGFixYEL1+5plnSn9iDQR/vnJXYwDYe++9LeYKO98R+4c//KHFDaWrcaE4DfXOO+9Ex6666iqLOe3kf4c77LCDxaeffnp0jCuHDz/88Cq/BshdyZXrHvsqvGyEN7n2G2DXVadyzeSIiIhIkvSQIyIiIknSQ46IiIgkqeLW5DRu3NhiLncDgMGDB1u8++67W9yyZctoXK5y1HwdlN977z2Lp06dGo3jdThagyNSGh07dqwy9vieW7lyZXSM1zNI9XCrjf79+0fH+DOUS6Eff/zxaNzSpUtr6ezSkq/1Ab+/eb0LEP8NPOGEE6Jj7du3t5jX5/C6G6C4tTe8nsb/zePvx61cuJsyEL9vPv3002qfQ6E0kyMiIiJJ0kOOiIiIJKni0lU8Xcelb0A8pc2bDPquw6tXr7aYp9r22WefaBwf4+lD3tjQjxORwvmyUu6sy53EeRNBb9KkSRZzGwlAHceri1tq8AaNPqXBZeNc7vzYY4/V4tk1HLn+pvilF7yJdO/evaNj3Cql1OXa+dJL3IqF02T/93//F43j98pTTz0VHStluwHN5IiIiEiS9JAjIiIiSaq4dBVXMi1cuDA69u6771rMU3Uvv/xyNI4rMHr16mUxd/EUkerhlIavpGjevHmV8amnnhqN401y/aaQjKt2rr32WounT58ejVMqOT9fabrrrrta/K1vfSvn13GHbK6oUjVV7fLVgvz79sd4yUah6Sq+XzglCcQVYFwZ5b83bwDKlVz8txYAZs+ebfE///nP6JjSVSIiIiJfQQ85IiIikiQ95IiIiEiSKnpNzowZM6Jj3/nOdyzOl4Ps3Lmzxd/85jct9vlpLpPz+UmRhoLvJd5VGAAuuOACi4877jiLO3ToEI3za3S+lK/bKufluUwcAG6++WaLfZddKdyxxx4bveb1TbyegtdPAHHZ+JIlS2rp7MTz7UsmTpxo8ZQpU6Jj3LGaS7n9OjVey/r+++9b7Ne85lpD43c1v+uuuyzmrsvdunWLxvHnxX333RcdW7BggcU17YasmRwRERFJkh5yREREJEkVl65iflMznjblMrbLL788GrfffvtZzFNoy5Yti8bx1B1PC/opQ5GUderUyeKrr746OnbKKadY7DcPZDzlzPH69eujcXwPT5gwweLrr78+GvfOO+981WlLDpyWHzRoUHSse/fuVX7NE088Eb0eNWpU6U9MvpJfNrFmzRqLX3311ejY8uXLLeZ0sU//jBw50mJeAsJ//4A4fTVv3jyLOSVV1ff/kk9Nc5sX3ngbKG2HZs3kiIiISJL0kCMiIiJJqrh0FW/+xav/AaBr164Wc3fFQw45JBrXpk2bKr/f5MmTo3Hjx4+3mFeu8wafIqk76aSTLD755JOjY5yi4qqNOXPmROMeeOABi3mzW38vvfHGGxbPnz/fYlXwlM5ee+1lMVeXAvEGnWvXrrX4z3/+czRO16N+4LSOTxtx6pHvU76uQLxJLldP+q7DPXr0sJhTTb5ycscdd7TYVywz/jr+3kCcaqvpe00zOSIiIpIkPeSIiIhIkvSQIyIiIkkqyZoczrtxPg6Ic7y8Y+rGjRujcZzP93k8zhkOGDDAYr+r6dChQy3mdTetWrXKee6zZs2y+Pbbb4+OvfbaaxYvWrQo5/cQScnOO+8cveauxk2aNImOcUnr008/bfEPfvCDaNx7771XylOUGuA1Vvk+G2+55RaLfTddKQ//t5HvR7+uhVs/cIm2/x5HH320xStXrrTYr4Xh9wrvcO7XxvJ6nXxrcvh7cHdmIO5wrjU5IiIiIlXQQ46IiIgkqSTpKk5R+XJtnuIaPXq0xT79w9PePI0FxNNuQ4YMsdinq7iE3HdQZBs2bLCYU1J+E0B1Ni4vLo/kuFmzZtE4ni6t6WZuDRVPKx988MHRMb7/PL6Xxo4da7EvIZfy4SUDANC7d++cY3kD5BEjRljsN3WU+oG7CPuNMrlsnD8/fXpp1113rfJ7+2teyi7EQPy+POCAA6JjM2fOtJg/S4rZKFszOSIiIpIkPeSIiIhIkopOV3Gn4NNOO83iH//4x9E4rowaN26cxb7agqfGOnfuHB3jtFS7du0s9tNu/D045qouIO5kfO2111o8d+7cnN9Pagenl3z3W/798/utf//+0bi2bdtazBvHKXWVH08/c0XVoYceGo3j372fsuZN/J599tmc43gqnVMi/hrx9DtPt/NGhJ6u8+b4s9GnAgYPHpzz66ZPn27xW2+9VfoTk1rj7wPuWOw3xyxEqdNT+bRs2TJ6zctcanoemskRERGRJOkhR0RERJKkhxwRERFJUsl3Iff5M16Tc8wxx1hcnVKwTz75xGJeA+BLvLmENd/3f+mllyyePXu2xVqDUzf42vCOuHwtgHgtFpc4+1JJfr1w4UKLtVYjP86DX3fddRZzm4avwu0jzj//fIuXLVsWjeN1drxGzq+14fYRnJf3Jem8k/nw4cMt9t1RG+o9zffERRddFB3j9Rl+p+nJkyfnPCbl59/P/Bnn27Lwe4B3F/ddiPN1JS5GrrWx/m8yt5/wn/38OV7Te1gzOSIiIpIkPeSIiIhIkopOV/EU0tSpUy1+/fXXo3F77723xR06dLDYp7U4JeWnsOfPn2/xiy++aPGHH34YjeM0FJ+f76DMU2Oakq17PG350UcfWfzggw9G47jzLqdFeOoVAPr161fl91PX3fx4Ortv374W59u00ePr4tMideU73/mOxf/3f/8XHcv1mZC65s2bW+w3TWZ8vwDAm2++aXFD+n1VCv/3ipdvXHLJJdEx3gGgT58+FvsOx7yxZzGpK5+G4lYs/LecuxgDwOLFiy1+5JFHomP8t72YLsdMMzkiIiKSJD3kiIiISJL0kCMiIiJJKnpNDufJuHTbb43A+b5cJcFAXBLq11Lw7uBcWsbreIDcJcN+/Y9yzfUH55h5/QQA3HjjjRb7snHG6wj4fST5cQsG3nKlRYsW0The0+Hv21xbb/g8elG7B9PPyrdWoHHjxhb7thIN9V7v3r27xX4Xef6d3H333dGx++67r3ZPTEqK/wb6rZK4pJz/Lvv3Q8+ePS0u9Zoc3qrHl4nzZzX/XQeAjRs3Vvs8ctFMjoiIiCRJDzkiIiKSpJBvOjeEUO253q233jp6vf3221ucL+XAqSbuggsAy5cvr3JcqrIsq5XtX4u5nnXJ7yrPO87n20WXy2B5etSnM8ulNq5nKa4lp3G5LJ9L94E4zbznnntGx/je3G+//Szm3eABYMqUKQWdE0+Xc6qbW1F4Y8aMsfjyyy+PjnF35VKolHuTU3j/7//9v+jYBRdcYPGll14aHRs5cqTFNS3drQT19d6sTfWl43Gp5bqWmskRERGRJOkhR0RERJJU8nSV1FylTIlLYVKaEs9XXcXH/OdKbVZX8fcu15R4TdXm9fQdj/k1d5MH4k0TG4KU7s2GTukqERERaVD0kCMiIiJJ0kOOiIiIJElrcuqhSsz7S27K+6dD92ZadG+mQ2tyREREpEHRQ46IiIgkKW+6SkRERKRSaSZHREREkqSHHBEREUmSHnJEREQkSck+5IQQuoYQPg4hPFDuc5HChRD+vxDCSPdv7+b4t1Pr9uykWCGErUMI94QQ5oYQVocQJoYQBpf7vKQ4IYRzQghTQgjrQggfhhDuCiHsUO7zkuKkfD2TfcgBcCeAf5f7JKTaxgLoE0LYEgBCCG0BNAKwn/u33b8YK5VhKwDzAfQH0BzAFQD+HkLoXMZzkiKEEH4A4OcAfohN1/JAAJ0APBdCaFzOc5PqS/16JvmQ88X/w18B4IVyn4tU27+x6aGm1xev+wJ4EcA77t9mZln2Qd2fnhQjy7K1WZZdk2XZnCzLPs+y7CkAswHsX+5zk8KFEJoBuBbAxVmWPZtl2SdZls0B8C0AnQGcWcbTk2pqCNczuYecLy7adQC+X+5zkerLsmwjgNcB9Pvin/oBGAfgZfdvmsWpYCGE1gC6AZhW7nORaukDYBsAI/gfsyxbA+AZAAPLcVJStOSvZ3IPOQB+CuCeLMsWlPtEpGgv4b8PNH2x6SFnnPu3l8pwXlICIYRGAIYD+EuWZdPLfT5SLa0ALM2y7NMqji384rhUjuSvZ1IPOSGEXgAGALi13OciNTIWwCEhhB0B7JRl2bsAXsWmtTo7AugJzeRUpBDCFgDuB7ARwEVlPh2pvqUAWoUQtqriWNsvjkvlSP56JvWQA+BQbMojzgshfAjgUgAnhRAmlPOkpNrGY9MCuPMAvAIAWZatAvDBF//2QZZls8t3elKMEEIAcA+A1gBOyrLskzKfklTfeAAbAAzlfwwhNAUwGFoHWWmSv56pPeT8HkAXbFqg2gvA3QCeBjConCcl1ZNl2XoAb2DTuqpxdOjlL/5NsziV6S4AewI47otrLBUmy7KV2LRQ9fYQwlEhhEZfVMj9HcACbJqlkwrREK5nVVNUFSvLsnUA1n35OoSwBsDHWZYtKd9ZSZFeAnAQNj3YfGkcNqU49JBTYUIInQCcj03/r/HDTZM6AIDzsywbXrYTk2rLsuzmEMIyAL/Epv9TuQrAYwDOyLJsQ1lPTqot9eupDTpFREQkSamlq0REREQA6CFHREREEqWHHBEREUmSHnJEREQkSXrIERERkSTlLSEPIaj0qgyyLAtfPar6dD3Lozaup65leejeTIvuzXTkupaayREREZEk6SFHREREkpRUx2MRESm9LbaI//8wdazGZ599VtenI1IwzeSIiIhIkvSQIyIiIknSQ46IiIgkSWtySmzLLbeMXvMGqJ9//nldn46ISFH4s6xfv37Rsb322svif/zjHxZ/9NFH0bhPP/20ls5OpDCayREREZEk6SFHREREkqR0VREaNWoUve7WrZvFAwYMiI5NnjzZ4nHjxlmsaVyRzXGpsi9bZpz6VRq4dnTq1Mniiy++ODp2wAEHWMyff3PmzInGjR071uJly5ZZvGjRomjchg0bLNb1LL2tt97a4u233z461rRpU4vXrl1rsU89VmqrAM3kiIiISJL0kCMiIiJJUrqqCC1atIheX3rppRYPHTo0Ovbaa69ZzJVWPI0LaIpWGiafkvra175m8RFHHGFx48aNo3FTp061eOLEiRa///770biPP/64JOfZEJ155pkWDxw4MDrWpEkTiy+44AKLP/nkk2gcp6U4XTVmzJhoHH8ePvfccxbr+hWPq+PatWtncY8ePaJxXbp0sXju3LkWv/LKK9G4lStXWszpxfpOMzkiIiKSJD3kiIiISJL0kCMiIiJJ0pqcAvHagQMPPDA61r9/f4t9eV7Pnj0tbt68eS2dXWlttdV/3xYqdZdS4x2sO3fuHB0744wzqoz9fbVq1SqLFyxYYPGf//znaNy9995b5ddI1bg9xumnn24xr8HxeK3hxo0bo2MdOnSwmK/1/vvvH4278MILLX7ooYcsvuyyy6JxS5cuzXkeDRGvu+GSfwDYe++9LT7nnHOq/HcAaN26tcVcQv7EE09E45588kmLn376aYvr+3pSzeSIiIhIkvSQIyIiIklSuqpA3DGyb9++0bH27dtb7KfuuIR8/PjxOceVG6cQHnnkEYu/+c1vRuP8dLRIIfj91axZM4u/+93vRuNOPvlki3l6nFNSANCrVy+LudTcl8dyKkW+GrfH8K0yGP9ep0+fbvGf/vSnaNyhhx5qMW/y6dOP22yzTZXjOnbsGI1r6Okq/jsExEsg/N8l/t0fdNBBVX6N/558Hfbdd99o3Ntvv20xL9+ob3/LPM3kiIiISJL0kCMiIiJJKlu6ync63XHHHS32019+o7By4I6Rhx12WHSMq5F8x0/eoHP58uW1dHY1x9PPJ5xwQhnPRFLE76/169dbzN1tAeDDDz+0ePTo0RZzV2MgTlfxZ8cee+wRjeOp+dWrV1f3tJPn0x+DBw+2mH+vHncv/tWvfmXxP/7xj2jc448/bjGnoXyFz0knnWRx27ZtLT7uuOOicRMmTMh5Tg0B/24AYJ999rF4yJAh0TH+Hbds2dJirsjy+JhPa/HrfJvn1jeVc6YiIiIi1aCHHBEREUmSHnJEREQkSXW6JofzfVzeBgDnnnuuxbyOBQBuu+02i+tyV1oudeV1Kr6zJFuxYkX0mv9bPvvssxKenUhl4jYEzzzzTHTs2WeftZjX5nEJOhCvN+BOuv77qctxfn4N07BhwyzOt3Zj3rx5Fo8bN87idevWRePmzJlj8fz58y3ebrvtonG8xuPiiy+2+Nhjj43G3XDDDRan3I2d3+/bbrutxWeffXY0jv8u+XVOfP34+xXaVoHX8QBxifrRRx9tsf97zTuZ14e/eZrJERERkSTpIUdERESSVOvpKp4m23XXXS2+6KKLonE8/bX77rtHxx588EGLefqztvGmdNxV1XcC5ek/nqoDgEmTJllc3ztDNlTHHHNM9Jo7uM6cObOuT6dB8fdErnvElzrzNHjjxo0t9vem/zoBdtttN4uvvfba6BhvKMxmzZoVvf7pT39qsf/My4WvGbcRAHKnFX3HY76+S5YsKejnViLuPLzLLrtYzK0T/LF86UX+G1XoPec3ZeX3BqfJfKn5mjVrLF65cqXFGzZsyHl+tUkzOSIiIpIkPeSIiIhIkvSQIyIiIkkq+ZocX+rJ+d+rr77a4iOPPDIax+WAU6dOjY5xjq8u8U65/N/hW1rzzrh33nlndOz999+vpbOTUhk6dGj0+uCDD7a4e/fudX068gUuYT3rrLOiY7xGjrd84HJmoH6UsJYbbzsDxOspBgwYEB3jdR38mfzoo49G455//nmLa/N3vMMOO0Svef1Hpa/JadSokcV+XQuvE+RrNGjQoGhcvjVnvA6H17L6v69+y5Qv9ejRI3rNa2X5PeT/lnN7mDFjxlg8cuTIaFxdrdfRTI6IiIgkSQ85IiIikqSSpKs4RcVpHQC45pprLOa0AJd9AsBTTz1l8c9+9rPoGO94W5t8Goqn63xpKuNd0sePHx8dK1fZ3FfxO6nzbra//vWv6/p0yupvf/tb9Pqb3/ymxVdddVV07LrrrquTc2qoOF3CLSe4Cy4AtGnTxmL+jPnd734XjavLDun1lU9ptG/fPucxximOsWPHRsd8CXh1caoGiJcGNBTcUd93K+Ydxfmz2V+vfJ2M+b3/6quvWvzCCy9E4/zfrFznxH8PTzzxRIt32mmnaNwhhxxiMacbly9fHo3jTsm12RpGMzkiIiKSJD3kiIiISJKKTlfxdONee+1l8aWXXhqN4xQVr/J/6623onH33nuvxX7qKteGYr6Si8f5igLGHR459lOBffr0sZjTVT4FxdN9nLqqz3xnU14t39DSVX769l//+pfFl19+eXSMq3defPHF2j2xBsB3aeU06iWXXGIxp6cA4Mknn7T4kUcesVjpqU34s4xTH/61/5zkz0NeNvDcc8/lHFeM1q1bR6/79+9f5Tn5CiquyKl0vNHz4MGDo2P8mpd2+L+F/LeIO7UDcdXU9ddfb/EHH3wQjcuVenzvvfei17yk5LHHHrPYd2G+8sorLebKML+x9eOPP27xL37xi5znVOiGorloJkdERESSpIccERERSZIeckRERCRJRa/J2WOPPSy+4447LP7a174WjePcMO806zto8k62vryZ87Kcq/M71PJ6mH79+lV5DgAwatQoizlv2bVr12jcwIEDLea84IQJE6Jxt912m8V1Ve5eU5wDB8q3lojXVfmcbV3tOO9zvjfeeKPF3L0TAP74xz9a/PWvf93iSlmLVd/48tMLLrjAYu766u8rXodT6C7YDUnbtm0t/u53vxsd69y5c86v4+7FXHZc6rVO/jOZy6mZLztesWJFSc+jrnGbEv68861Xcq0p3bhxY/R64cKFFvM6GSD+28ad9wtta+I7WfPrd9991+K1a9dG46ZNm2YxX1feMR2I1/L4NXfFnG8umskRERGRJOkhR0RERJJUcLrKl3pyaRhPO+XryMhdLS+88MJo3Omnn27xtttuGx3j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ljamhlMEvLmtP8b3/t577x2NW7x4scWc0uD7D4jfN0oD5+c/a7/2ta9ZzOkpIN6Ikz+vfWqWWytwmpk3sAVyb1z79ttvR6932WWXKsf50vUhQ4ZYzJ8PADBixIgqz0nl5HFbCP9+4M8xTj3W9ucbXyPfyqCU6WjN5IiIiEiS9JAjIiIiSdJDjoiIiCSp6DU5nAfn9sy8ngEArrvuOotz5V2BOAe3fv366NiiRYuq/Fk+b8fbMHA+8YQTTojGcYk6r//xregffvhhi59//nmLfelivlbYygdvvg0Dl61yyTe3cwfictETTzwx57hca67y/e55jcGCBQuiYy+88ILF/lr7kvKGgMuF/doMzvVz2/5zzjknGnfaaadV+b35a4D4/uHYt/AfPny4xf/85z8t9vew7r/Nt7XhdgwHHnhgdIzvVf4M9fcIfybzeqtC10f5z3je4XrSpEkWczk5EJe/c2sDf0yKU5fr23i91t///vfomNbkiIiIiHwFPeSIiIhIkkpSQv7hhx9a7EsIuePv/vvvb7EvGeOpUV8uyjvZPvjggxb7qbWdd965yu9/2GGHReO4eydPi61evToax2mLV155xWKfslAJa36+rQCXgbZv395iv4N7r169LG7Xrp3F+VoC5MPvMe66yylQABg9erTF/r3YEK61Lx3lUk9OUwDxNePUVceOHUt6Tr7zLb83GH/eAHFJekPlu4D37dvXYv5MBuIUIe8ofskll0TjOH3FHeAL3bnapxE5fcX33//+7/9G4/izxH8O5Gs9IvVbbX6u6l0hIiIiSdJDjoiIiCSpJOkqXl0/a9as6NhVV11lMU9t++62PF3pKyS48ymnivyUJ6+u55/lK0JydUbmFAYQT33PnTvX4oaQsqgp7iS92267RcfOO+88i7t27Wqxn24udPo5V9dqv0kfV+G88cYbFv/hD3+IxnEnVW0EGVdB+C6zXOlW7Ea4hfCpCe6AfcYZZ1js3zO8UWhDupb8e2jTpk10rGnTphb73yunZ2fMmGHxO++8E43jz+FCU1T58HuHK+44BerHbbvtttExfp2vk31DVGyKPwWayREREZEk6SFHREREkqSHHBEREUlSSdbkMJ//5E6WvObFr7vhdS7+e3AuPV9+lccVmn/n7+e/Jt85SX78++LcPhCvb9pjjz0sLrYENNcaq9dffz0ad8UVV1g8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\n",
            "text/plain": [
              "<Figure size 720x720 with 25 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dunhN6lbmjjy",
        "colab_type": "text"
      },
      "source": [
        "# Simple classifier"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YMkuvJKTm9dx",
        "colab_type": "text"
      },
      "source": [
        "#### Build Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d5l1tnXhmmxH",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def CNNModel():\n",
        "  inputs = Input(shape=(28,28,1))\n",
        "  x = Conv2D(32, (3,3), activation='relu')(inputs)\n",
        "  x = MaxPooling2D(pool_size=2)(x)\n",
        "  x = Conv2D(64, (3,3), activation='relu')(x)\n",
        "  x = MaxPooling2D(pool_size=2)(x)\n",
        "  x = Conv2D(64, (3,3), activation='relu')(x)\n",
        "  x = MaxPooling2D(pool_size=2)(x)\n",
        "  x = Flatten()(x)\n",
        "  # x = Dense(96, activation='relu')(x)\n",
        "  outputs = Dense(len(LABELS), activation='softmax')(x)\n",
        "\n",
        "  return Model(inputs=inputs, outputs=outputs)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xwR4wZ99SPcP",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 503
        },
        "outputId": "a21ea8c0-8ea9-47f4-d4ed-240a10317a0b"
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "model = CNNModel()\n",
        "model.summary()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"functional_1\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "input_1 (InputLayer)         [(None, 28, 28, 1)]       0         \n",
            "_________________________________________________________________\n",
            "conv2d (Conv2D)              (None, 26, 26, 32)        320       \n",
            "_________________________________________________________________\n",
            "max_pooling2d (MaxPooling2D) (None, 13, 13, 32)        0         \n",
            "_________________________________________________________________\n",
            "conv2d_1 (Conv2D)            (None, 11, 11, 64)        18496     \n",
            "_________________________________________________________________\n",
            "max_pooling2d_1 (MaxPooling2 (None, 5, 5, 64)          0         \n",
            "_________________________________________________________________\n",
            "conv2d_2 (Conv2D)            (None, 3, 3, 64)          36928     \n",
            "_________________________________________________________________\n",
            "max_pooling2d_2 (MaxPooling2 (None, 1, 1, 64)          0         \n",
            "_________________________________________________________________\n",
            "flatten (Flatten)            (None, 64)                0         \n",
            "_________________________________________________________________\n",
            "dense (Dense)                (None, 47)                3055      \n",
            "=================================================================\n",
            "Total params: 58,799\n",
            "Trainable params: 58,799\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JxGdeZ_t6guC",
        "colab_type": "text"
      },
      "source": [
        "#### Callback"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JcglLPpt6jCk",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "early_stopper = tf.keras.callbacks.EarlyStopping(\n",
        "    monitor='val_loss', patience=5, verbose=0, mode='auto', restore_best_weights=True\n",
        ")"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uVLaA5aYGPwT",
        "colab_type": "text"
      },
      "source": [
        "#### Compute class weights"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "i9wiogNQGPag",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def get_training_labels(dataloader):\n",
        "    y_train = []\n",
        "    for _, label in dataloader:\n",
        "        y_train.extend(np.argmax(label, axis=1))\n",
        "    \n",
        "    return y_train\n",
        "\n",
        "y_train = get_training_labels(trainloader)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YtOjNHQAHztI",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "cls_wt = class_weight.compute_class_weight('balanced', \n",
        "                                           np.unique(y_train), \n",
        "                                           y_train)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M8qfQ9lmIokw",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 896
        },
        "outputId": "5b76da55-2453-41f7-9d03-908e1b4a35e8"
      },
      "source": [
        "class_weights = dict(zip(np.unique(y_train), cls_wt))\n",
        "class_weights"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{0: 0.4287421947271045,\n",
              " 1: 0.3880998128329477,\n",
              " 2: 0.43232532582428956,\n",
              " 3: 0.42194859305896765,\n",
              " 4: 0.4422314558463302,\n",
              " 5: 0.47467828260561684,\n",
              " 6: 0.43442334237707647,\n",
              " 7: 0.41178944971832043,\n",
              " 8: 0.43814809125124815,\n",
              " 9: 0.43807205819477174,\n",
              " 10: 2.307948475546893,\n",
              " 11: 3.835360137577015,\n",
              " 12: 1.1440379056254832,\n",
              " 13: 3.196295318502395,\n",
              " 14: 3.0074267840757583,\n",
              " 15: 1.6354198254425962,\n",
              " 16: 5.887206255954271,\n",
              " 17: 4.795657375670957,\n",
              " 18: 1.0097736170212765,\n",
              " 19: 2.5912893066651526,\n",
              " 20: 2.9511737696436655,\n",
              " 21: 0.7283842237155034,\n",
              " 22: 1.2772890318524548,\n",
              " 23: 1.8075569544273173,\n",
              " 24: 0.5379835569331667,\n",
              " 25: 1.3865945526492318,\n",
              " 26: 5.688224521300567,\n",
              " 27: 2.934023759359823,\n",
              " 28: 0.6285002346644405,\n",
              " 29: 1.523864567519734,\n",
              " 30: 0.9672902301146415,\n",
              " 31: 1.9548041215372398,\n",
              " 32: 2.023432223912465,\n",
              " 33: 2.652273631596125,\n",
              " 34: 2.074990993385822,\n",
              " 35: 2.733254701768289,\n",
              " 36: 1.4832162412180914,\n",
              " 37: 2.9211224746044797,\n",
              " 38: 1.4608993301812452,\n",
              " 39: 0.6034984562642103,\n",
              " 40: 5.849013073570879,\n",
              " 41: 4.026210594183718,\n",
              " 42: 1.7077757019031197,\n",
              " 43: 1.3009864164879363,\n",
              " 44: 5.006810873766742,\n",
              " 45: 1.0544837270481167,\n",
              " 46: 0.8135986987731054}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ScKH6S3HUhcu",
        "colab_type": "text"
      },
      "source": [
        "#### Train"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-TvNaKBGNdyc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "val_images, val_labels = next(iter(testloader))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "GSpEIbopSVQm",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 856
        },
        "outputId": "130cf117-767f-4cda-e1d6-0048e067eb60"
      },
      "source": [
        "# initialize wandb run\n",
        "wandb.init(entity='iit-bhu', project='emnist')\n",
        "\n",
        "# hyperparameters\n",
        "config = wandb.config\n",
        "config.epochs = 70\n",
        "config.learning_rate = 0.001\n",
        "\n",
        "# model\n",
        "tf.keras.backend.clear_session()\n",
        "model = CNNModel()\n",
        "\n",
        "# optimizer\n",
        "optimizer = tf.keras.optimizers.Adam(learning_rate=config.learning_rate)\n",
        "\n",
        "# compile\n",
        "model.compile(optimizer, 'categorical_crossentropy', metrics=['acc'])\n",
        "\n",
        "# train\n",
        "model.fit(trainloader,\n",
        "          epochs=config.epochs,\n",
        "          class_weight=class_weights,\n",
        "          validation_data=testloader,\n",
        "          callbacks=[WandbCallback(monitor='val_loss',\n",
        "                                   save_model=True,\n",
        "                                   data_type='image', \n",
        "                                   training_data=(val_images, val_labels), \n",
        "                                   labels=LABELS),\n",
        "                     early_stopper])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "                Logging results to <a href=\"https://wandb.com\" target=\"_blank\">Weights & Biases</a> <a href=\"https://docs.wandb.com/integrations/jupyter.html\" target=\"_blank\">(Documentation)</a>.<br/>\n",
              "                Project page: <a href=\"https://app.wandb.ai/wandb/emnist\" target=\"_blank\">https://app.wandb.ai/wandb/emnist</a><br/>\n",
              "                Run page: <a href=\"https://app.wandb.ai/wandb/emnist/runs/3evw77jb\" target=\"_blank\">https://app.wandb.ai/wandb/emnist/runs/3evw77jb</a><br/>\n",
              "            "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "Epoch 1/70\n",
            "2318/2318 [==============================] - 123s 53ms/step - loss: 0.9217 - acc: 0.7189 - val_loss: 0.5724 - val_acc: 0.8026\n",
            "Epoch 2/70\n",
            "2318/2318 [==============================] - 121s 52ms/step - loss: 0.5419 - acc: 0.8125 - val_loss: 0.4823 - val_acc: 0.8309\n",
            "Epoch 3/70\n",
            "2318/2318 [==============================] - 114s 49ms/step - loss: 0.4746 - acc: 0.8314 - val_loss: 0.4445 - val_acc: 0.8439\n",
            "Epoch 4/70\n",
            "2318/2318 [==============================] - 147s 64ms/step - loss: 0.4387 - acc: 0.8407 - val_loss: 0.4279 - val_acc: 0.8477\n",
            "Epoch 5/70\n",
            "2318/2318 [==============================] - 147s 63ms/step - loss: 0.4135 - acc: 0.8470 - val_loss: 0.4178 - val_acc: 0.8501\n",
            "Epoch 6/70\n",
            "2318/2318 [==============================] - 145s 63ms/step - loss: 0.3956 - acc: 0.8512 - val_loss: 0.4041 - val_acc: 0.8538\n",
            "Epoch 7/70\n",
            "2318/2318 [==============================] - 145s 62ms/step - loss: 0.3828 - acc: 0.8544 - val_loss: 0.4116 - val_acc: 0.8523\n",
            "Epoch 8/70\n",
            "2318/2318 [==============================] - 144s 62ms/step - loss: 0.3714 - acc: 0.8567 - val_loss: 0.4030 - val_acc: 0.8546\n",
            "Epoch 9/70\n",
            "2318/2318 [==============================] - 144s 62ms/step - loss: 0.3615 - acc: 0.8591 - val_loss: 0.3994 - val_acc: 0.8582\n",
            "Epoch 10/70\n",
            "2318/2318 [==============================] - 142s 61ms/step - loss: 0.3539 - acc: 0.8604 - val_loss: 0.3976 - val_acc: 0.8580\n",
            "Epoch 11/70\n",
            "2318/2318 [==============================] - 142s 61ms/step - loss: 0.3463 - acc: 0.8617 - val_loss: 0.3882 - val_acc: 0.8609\n",
            "Epoch 12/70\n",
            "2318/2318 [==============================] - 144s 62ms/step - loss: 0.3397 - acc: 0.8635 - val_loss: 0.3911 - val_acc: 0.8606\n",
            "Epoch 13/70\n",
            "2318/2318 [==============================] - 145s 62ms/step - loss: 0.3337 - acc: 0.8647 - val_loss: 0.3875 - val_acc: 0.8628\n",
            "Epoch 14/70\n",
            "2318/2318 [==============================] - 144s 62ms/step - loss: 0.3289 - acc: 0.8655 - val_loss: 0.3946 - val_acc: 0.8603\n",
            "Epoch 15/70\n",
            "2318/2318 [==============================] - 143s 62ms/step - loss: 0.3245 - acc: 0.8662 - val_loss: 0.3861 - val_acc: 0.8631\n",
            "Epoch 16/70\n",
            "2318/2318 [==============================] - 145s 62ms/step - loss: 0.3198 - acc: 0.8673 - val_loss: 0.3887 - val_acc: 0.8621\n",
            "Epoch 17/70\n",
            "2318/2318 [==============================] - 142s 61ms/step - loss: 0.3160 - acc: 0.8679 - val_loss: 0.3907 - val_acc: 0.8612\n",
            "Epoch 18/70\n",
            "2318/2318 [==============================] - 146s 63ms/step - loss: 0.3120 - acc: 0.8686 - val_loss: 0.3937 - val_acc: 0.8610\n",
            "Epoch 19/70\n",
            "2318/2318 [==============================] - 146s 63ms/step - loss: 0.3077 - acc: 0.8695 - val_loss: 0.3913 - val_acc: 0.8615\n",
            "Epoch 20/70\n",
            "2318/2318 [==============================] - 146s 63ms/step - loss: 0.3045 - acc: 0.8703 - val_loss: 0.3939 - val_acc: 0.8625\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<tensorflow.python.keras.callbacks.History at 0x7f864a613518>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5qbue1HNkX4-",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def plot_confusion_matrix():\n",
        "  y_test = []\n",
        "  y_preds = []\n",
        "  for imgs, labels in tqdm(testloader):\n",
        "      y_test.extend(np.argmax(labels, axis=1))\n",
        "      y_pred = model.predict(imgs)\n",
        "      y_preds.extend(np.argmax(y_pred, axis=1))\n",
        "\n",
        "  cm = confusion_matrix(y_true = y_test, y_pred = y_preds)\n",
        "  cm_normalize = normalize(cm, axis=1)\n",
        "\n",
        "  plt.figure(figsize=(15,15));\n",
        "  sns.heatmap(cm_normalize, annot=False, xticklabels=LABELS, yticklabels=LABELS, linewidths=.1);\n",
        "\n",
        "  plt.savefig('confusion_matrix.png', bbox_inches='tight')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wx6kPmjXv6F6",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 882
        },
        "outputId": "23e2a788-2207-40bf-e211-82f1cf129eea"
      },
      "source": [
        "plot_confusion_matrix()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "409it [00:26, 15.39it/s]\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1080x1080 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "h3bHsUre0YMD",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "wandb.log({\"image_confusion_matrix\": [wandb.Image('confusion_matrix.png')]})"
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}